package study;

import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;

public class ConvertorTest {

    /**
     * @param args
     */
    public static void main(String[] args) {

        testList2Array();
        testArray2List();
        testSet2List();
        testList2Set();
        testSet2Array();
        testArray2Set();
        testMap2Set();
        testMap2List();
        Arraytest();
    }

    private static void testMap2List() {

        Map<String, String> map = new HashMap<>();
        map.put("A", "ABC");
        map.put("K", "KK");
        map.put("L", "LV");

        // 将Map Key 转化为List
        List<String> mapKeyList = new ArrayList<>(map.keySet());
        System.out.println("mapKeyList:"+mapKeyList);

        // 将Map Key 转化为List
        List<String> mapValuesList = new ArrayList<>(map.values());
        System.out.println("mapValuesList:"+mapValuesList);

    }

    private static void testMap2Set() {

        Map<String, String> map = new HashMap<>();
        map.put("A", "ABC");
        map.put("K", "KK");
        map.put("L", "LV");

        // 将Map 的键转化为Set
        Set<String> mapKeySet = map.keySet();
        System.out.println("mapKeySet:"+mapKeySet);

        // 将Map 的值转化为Set
        Set<String> mapValuesSet = new HashSet<>(map.values());
        System.out.println("mapValuesSet:"+mapValuesSet);
    }

    private static void testArray2Set() {

        String[] arr = {"AA","BB","DD","CC","BB"};
        List<String> list = new ArrayList<>();
        list.add(0,"d");
        list.add(1,"a");
        System.out.println(list);
        List<Integer> list1 = new ArrayList<>();
        list1.add(0,2);
        System.out.println(list1);
        StringBuilder str = new StringBuilder();
        str.append(1);
        str.append("hahahah");
        int a=str.length();
        System.out.println(a);
        System.out.println(str);
        //数组-->Set
        Set<String> set = new HashSet<>(Arrays.asList(arr));
        System.out.println(set);
    }

    private static void testSet2Array() {
        Set<String> set = new HashSet<>();
        set.add("AA");
        set.add("BB");
        set.add("CC");

        String[] arr = new String[set.size()];
        //Set-->数组
        set.toArray(arr);
        System.out.println(Arrays.toString(arr));
    }

    private static void testList2Set() {

        List<String> list = new ArrayList<String>();
        list.add("ABC");
        list.add("EFG");
        list.add("LMN");
        list.add("LMN");

        //List-->Set
        Set<String> listSet = new HashSet<String>(list);
        System.out.println(listSet);
    }

    private static void testSet2List() {

        Set<String> set = new HashSet<String>();
        set.add("AA");
        set.add("BB");
        set.add("CC");

        //Set --> List
        List<String> setList = new ArrayList<String>(set);
        System.out.println(setList);
    }

    private static void testList2Array() {
        //List-->数组
        List<String> list = new ArrayList<>();
        list.add("AA");
        list.add("BB");
        list.add("CC");
        Object[] objects = list.toArray();//返回Object数组
        System.out.println("objects:"+Arrays.toString(objects));

        String[] arr = new String[list.size()];
        list.toArray(arr);//将转化后的数组放入已经创建好的对象中
        System.out.println("strings1:"+Arrays.toString(arr));
    }

    private static void testArray2List() {
        //数组-->List
        String[] ss = {"JJ","KK"};
        List<String> list1 = Arrays.asList(ss);
        List<String> list2 = Arrays.asList("AAA","BBB");
        System.out.println(list1);
        System.out.println(list2);
    }
    public static void Arraytest(){
        int[] arr = new int[]{1,2,3,4,5};
        System.out.println(Arrays.toString(arr));
    }

}